//////////////////////////////////////////////////////////////////////////////////////////////
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//	File			:	"DestroyEntityMessage.h"
//	Authors			:	Luc Bednarek,
//	Course:			:	SGP 1306
//	Purpose			:	Inlined class to destroy an entity.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//////////////////////////////////////////////////////////////////////////////////////////////

#pragma once
#include "message.h"
#include <cassert>

class CDestroyEntityMessage :public CMessage
{
public:

	CDestroyEntityMessage( Entity* ptr ) : CMessage( MSG_DESTROY_ENTITY )
	{
		// Verify the parameter is not null
		assert( ptr != nullptr && "CDestroyEntityMessage::CDestroyEntityMessage - Cannot use nullptr" );

		pOwner = ptr;
		pOwner->AddRef();	
	}

	virtual ~CDestroyEntityMessage(void)
	{
		pOwner->Release();
		pOwner = nullptr;
	}

	Entity* GetOwner( void )	{ return pOwner; }

private:
	Entity* pOwner;
};

